package com.zpj.widget.editor.validator;

import android.annotation.SuppressLint;
import android.text.TextUtils;
import android.widget.EditText;

import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;


public class DateValidator extends Validator {
    private String[] formats;

    public DateValidator(String _customErrorMessage, String _format) {
        super(_customErrorMessage);
        formats = TextUtils.isEmpty(_format) ? new String[]{"DefaultDate", "DefaultTime", "DefaultDateTime"} : _format.split(";");
    }

    @SuppressLint("SimpleDateFormat")
    @Override
    public boolean isValid(EditText et) {
        if (TextUtils.isEmpty(et.getText()))
            return true;
        String value = et.getText().toString();
        for (String _format : formats) {
            DateFormat format;
            if ("DefaultDate".equalsIgnoreCase(_format)) {
                format = SimpleDateFormat.getDateInstance();
            } else if ("DefaultTime".equalsIgnoreCase(_format)) {
                format = SimpleDateFormat.getTimeInstance();
            } else if ("DefaultDateTime".equalsIgnoreCase(_format)) {
                format = SimpleDateFormat.getDateTimeInstance();
            } else {
                format = new SimpleDateFormat(_format);
            }
            Date date = null;
            try {
                date = format.parse(value);
            } catch (ParseException e) {
                return false;
            }
            if (date != null) {
                return true;
            }
        }
        return false;
    }

}
